#include<iostream>
#include<cstdio>
using namespace std;
struct node
{
	int v,ne;
}a[100000];
int ans[1001][1001],l=0;
int main()
{
	freopen("fruit.in","r",stdin);
	freopen("fruit.out","w",stdout);
	for(int i=0;i<1001;i++)for(int j=0;j<1001;j++)ans[i][j]=0;
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].v;
		a[i].ne=i+1;
	}
	a[0].ne=1;
	a[0].v=!a[1].v;
	a[n+1].v=2;
	int h=0;
	while(a[0].ne!=n+1)
	{
		int j=0;
		for(int i=0;i!=n+1;)
		{
			if(i==0||(a[i].v!=a[a[i].ne].v&&a[i].ne!=n+1))
			{
				int u=i;
			    i=a[i].ne;
				ans[l][j++]=a[u].ne;
				a[u].ne=a[a[u].ne].ne;
			}
			else
			{
				i=a[i].ne;
			}
		}
		l++;
	}
	for(int i=0;i<l;i++)
	{
		for(int j=0;ans[i][j]!=0;j++)cout<<ans[i][j]<<" ";
		cout<<endl;
	}
	return 0;
}
